Модуль:Suppress categories
Перейти до навігації
Перейти до пошуку
![{{i}}](http://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Test_Template_Info-Icon.svg/50px-Test_Template_Info-Icon.svg.png)
![]() |
Цей модуль помічено як К:альфа-модуль (11). У нього можуть вносити редагування треті особи і його можна використати на кількох сторінках, аби перевірити можливі проблеми пов'язані з використанням модуля, використовувати його слід обережно. Вітаються пропозиції щодо нової функціональности чи зміни в механізмах їхнього вводу і виводу. |
This is a simple module to strip categories from wikitext. For example, if passed the code "foo[[Category:Some category]]
", it will return only "foo
".
The module properly handles categories escaped with the colon trick, categories whose names include invalid characters such as ">
", and categories that are surrounded with nowiki tags. However, it does not support complex wikitext such as nested links or magic words like __TOC__
. Even so, it should still remove the vast majority of categories from any given wikitext.
Usage
[ред. код]{{#invoke:Suppress categories|main|input text}}
Examples
[ред. код]Code | Output |
---|---|
{{#invoke:Suppress categories|main|foo}}
|
foo |
{{#invoke:Suppress categories|main|foo[[Category:Some category]]}}
|
foo |
{{#invoke:Suppress categories|main|foo[[Category:Some category]]bar[[Category:Another category]]}}
|
foobar |
{{#invoke:Suppress categories|main|foo{{{some_parameter|[[Category:Bar]]}}}}}
|
foo |
{{#invoke:Suppress categories|main|foo[[Category:Bad ca[]tegory link]]}}
|
foo[[Category:Bad ca[]tegory link]] |
{{#invoke:Suppress categories|main|foo[[:Category:Colon trick]]}}
|
fooCategory:Colon trick |
{{#invoke:Suppress categories|main|foo[[Category:Piped link|bar]]}}
|
foo |
{{#invoke:Suppress categories|main|foo[[Category:Piped link|ba[]r]]}}
|
foo |
{{#invoke:Suppress categories|main|foo[[non-category link]]}}
|
foonon-category link |
{{#invoke:Suppress categories|main|foo[[ Category : Some category with spaces ]]}}
|
foo |
Документація вище включена з Модуль:Suppress categories/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього шаблону. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
-- This is a simple module to strip categories from wikitext. It does
-- not support nested links or magic words like __TOC__, etc. Even so,
-- it should still handle most categories.
local p = {}
-- Detects if a category link is valid or not. If it is valid,
-- the function returns the blank string. If not, the input
-- is returned with no changes.
local function processCategory( all, submatch )
local beforePipe = mw.ustring.match( submatch, '^(.-)[%s_]*|[%s_]*.-$' )
beforePipe = beforePipe or submatch
if mw.ustring.match( beforePipe, '[%[%]<>{}%c\n]' ) then
return all
else
return ''
end
end
-- Preprocess the content if we aren't being called from #invoke,
-- and pass it to gsub to remove valid category links.
local function suppress( content, isPreprocessed )
if not isPreprocessed then
content = mw.getCurrentFrame():preprocess( content )
end
content = mw.ustring.gsub(
content,
'(%[%[[%s_]*[cC][aA][tT][eE][gG][oO][rR][yY][%s_]*:[%s_]*(.-)[%s_]*%]%])',
processCategory
)
return content
end
-- Get the content to suppress categories from, and find
-- whether the content has already been preprocessed. (If the
-- module is called from #invoke, it has been preprocessed already.)
function p.main( frame )
local content, isPreprocessed
if frame == mw.getCurrentFrame() then
content = frame:getParent().args[1]
if frame.args[1] then
content = frame.args[1]
end
isPreprocessed = true
else
content = frame
isPreprocessed = false
end
return suppress( content, isPreprocessed )
end
return p